//
//  LCLocalNotification.m
//  TheLCNews
//
//  Created by apple on 15/12/8.
//  Copyright © 2015年 LC. All rights reserved.
//

#import "LCLocalNotification.h"
//  闹钟本地推送
//  如果闹钟需要设置多个通知, key就不能写成宏定义了, 需要动态生成, 以便在用户需要关闭某个闹钟时, 可以移除相对应的本地通知
@implementation LCLocalNotification

+ (instancetype)sendLocalNotification {
    static LCLocalNotification *localNotification;
    if (!localNotification) {
        localNotification = [[LCLocalNotification alloc] init];
    }
    return localNotification;
}

//  设置本地通知
+ (void)registerLocalNotification:(NSInteger)alertTime {
    UILocalNotification *notification = [[UILocalNotification alloc] init];
    //  设置通知触发的时间
    NSDate *fireDate = [NSDate dateWithTimeIntervalSinceNow:alertTime];
    NSLog(@"fireDate: %@", fireDate);
    
    notification.fireDate = fireDate;
    //  时区
    notification.timeZone = [NSTimeZone defaultTimeZone];
    //  设置重复的时间间隔
    notification.repeatInterval = kCFCalendarUnitSecond;
    
    //  通知内容
    notification.alertBody = @"今天新闻特别好看, 快来看看吧!    >>大道队敬上!";
    notification.applicationIconBadgeNumber = 1;
    //  通知被触发时播放的声音
    notification.soundName = UILocalNotificationDefaultSoundName;
    //  通知参数
    NSDictionary *userDic = [NSDictionary dictionaryWithObject:@"开始学习iOS了" forKey:@"key"];
    notification.userInfo = userDic;
    
    //  iOS8以后, 需要添加这个注册, 才能得到授权
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
        UIUserNotificationType type = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
        //  通知重复提示的单位, 可以是天, 周, 月
        notification.repeatInterval = NSCalendarUnitDay;
    } else {
        //  通知重复提示的单位, 可以是天, 周, 月
        notification.repeatInterval = NSDayCalendarUnit;
    }
    
    //  执行通知注册
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
}

//  取消某个本地推送通知
+ (void)cancelLocalNotificationWithKey:(NSString *)key {
    //  获取所有本地通知数组
    NSArray *localNotifications = [UIApplication sharedApplication].scheduledLocalNotifications;
    
    for (UILocalNotification *notification in localNotifications) {
        NSDictionary *userInfo = notification.userInfo;
        if (userInfo) {
            //  根据设置通知参数时指定的key来获取通知参数
            NSString *info = userInfo[key];
            
            //  如果找到需要取消的通知, 则取消
            if (info != nil) {
                [[UIApplication sharedApplication] cancelLocalNotification:notification];
                break;
            }
        }
    }
}









/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
}
*/

@end
